# -*- encoding:UTF-8 -*-
from turbogears import expose, redirect
from chamachama.util import Validacao
from chamachama import model
import cherrypy
import datetime

class Chamados:
    @expose(template="chamachama.templates.chamados.index")
    def index( self ):
        """ 
        Index da parte de criação de chamados, centro do sistema.
        Só é acessível após a validação do usuário através de cookies.
        """
        # Checando se os cookies foram setados:
        if not Validacao.validarLogin( ):
            redirect( "../" )
        
        
        # Pega as últimas 5 atualizações de chamados do usuário.
        nomeAtendente = cherrypy.session.get( 'nomeUsuario' )
        try:
            idAtendente = model.Usuario.select( model.Usuario.q.nome==nomeAtendente )[0].id
            listaUltimasAtualizacoes = model.Chamado.select( model.Chamado.q.donoAtual==idAtendente )[0:5]
        except:
            listaUltimasAtualizacoes = []

        return dict( listaUltimasAtualizacoes=listaUltimasAtualizacoes )
    
    @expose(template="chamachama.templates.chamados.formCriar")
    def formCriar( self ):
        # Checando se os cookies foram setados:
        if not Validacao.validarLogin( ):
            redirect( "../" )
        
        # Listando os dados para compor a página, o formulário
        # de criação de chamados.
        listaInfocentros = model.Infocentro.select( )
        listaContatos = model.ContatoInfocentro.select( )
        listaCategoria = model.Categoria.select( )
        listaSubCategoria = model.SubCategoria.select( )

        return dict( listaInfocentros=listaInfocentros,
                      listaContatos=listaContatos,
                      listaCategoria=listaCategoria,
                      listaSubCategoria=listaSubCategoria )

    @expose(template="chamachama.templates.chamados.criar")
    def criar( self, contato, categoria, titulo, descricao, status):
        """
        Controller para criar chamados.
        """
        # Antes de criar o chamado, setamos algumas variaveis:
        # Data atual e data da ultima modificacao do chamado, a criacao.
        dataCriacao = datetime.date.today().__str__()
        dataUltimaAtualizacao = dataCriacao
        
        # Dados do contato
        nomePessoa, idInfocentro = contato.split( ';' )
        
        # Dados da categoria do chamado
        idCategoria, idSubCategoria = categoria.split( ';' )
        
        # Dados do atendentes
        donoOriginal = cherrypy.session.get( 'nomeUsuario' )
        donoOriginal = int( model.Usuario.select( model.Usuario.q.nome==donoOriginal )[0].id )
        idGrupo = model.Usuario.select( model.Usuario.q.id==donoOriginal )[ 0 ].idGrupo
        
        # Cria o chamado em si:
        chamado = model.Chamado( nomePessoa=int(nomePessoa), idInfocentro=int(idInfocentro),
                                  idCategoria=int(idCategoria), idSubCategoria=int(idSubCategoria),
                                  donoOriginal=int(donoOriginal), donoAtual=int(donoOriginal), 
                                  idGrupo=int(idGrupo), dataCriacao=dataCriacao, dataUltimaAtualizacao=dataUltimaAtualizacao,
                                  status=status, titulo=titulo, descricao=descricao )
        
        return dict( chamado=chamado )
        